/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package upeu.cepre.business;

import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import upeu.cepre.model.Alumno;
import upeu.cepre.model.DetallePeriodoAlumno;
import upeu.cepre.model.DetallePeriodoSede;


import upeu.cepre.util.DataBaseConexion;

/**
 *
 * @author Elvis Zanguetsu
 */
public class DetallePeriodoAlumnoManager {

    public Connection connection;

    public void Add(DetallePeriodoAlumno detallePeriodoAlumno) {
        try {
            connection = DataBaseConexion.getConexion();
            PreparedStatement preparedStatement =
                    connection.prepareStatement(
                    "insert into detalleperiodoalumno(  idDetallePeriodoAlumno , idPeriodo , idAlumno , notaCursosFinal , notaExamenSemanalFinal , notaExamenFinal , pagoMatricula , pagoEducacion , pagoIngreso , numCuotas , idCarrera, idDellatePeriodoSede, campus) values (?,?,?,?,?,?,?,?,?,?,?,?,?)");

            preparedStatement.setString(1, detallePeriodoAlumno.getIdDetallePeriodoAlumno());
            preparedStatement.setString(2, detallePeriodoAlumno.getIdPeriodo());
            preparedStatement.setString(3, detallePeriodoAlumno.getIdAlumno());
            preparedStatement.setString(4, "00");
            preparedStatement.setString(5, "00");
            preparedStatement.setString(6, "00");
            preparedStatement.setString(7, "00");
            preparedStatement.setString(8, "00");
            preparedStatement.setString(9, "00");
            preparedStatement.setString(10, "00");
            preparedStatement.setString(11, detallePeriodoAlumno.getIdCarrera());
            preparedStatement.setString(12, detallePeriodoAlumno.getIdDetallePeriodoSede());
            preparedStatement.setString(13, detallePeriodoAlumno.getCampus());

            preparedStatement.executeUpdate();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public List<DetallePeriodoAlumno> findByIdPeriodo(String periodo) {
        List<DetallePeriodoAlumno> detallePeriodoAlumnos = new ArrayList<DetallePeriodoAlumno>();
        AlumnoManager alumManag = new AlumnoManager();
        CarreraManager carrManag = new CarreraManager();
        SedeManager sedeManag = new SedeManager();
        DetallePeriodoSedeManager detPerSedMang = new DetallePeriodoSedeManager();

        try {
            connection = DataBaseConexion.getConexion();
            Statement statement = connection.createStatement();
            PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idPeriodo=?");
            prepareestatemente.setString(1, periodo);
            ResultSet rs = prepareestatemente.executeQuery();
            while (rs.next()) {
                DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();

                detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));

                detallePeriodoAlumnos.add(detallePeriodoAlumno);

            }
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return detallePeriodoAlumnos;
    }

    public List<DetallePeriodoAlumno> Report() {


        List<DetallePeriodoAlumno> detallePeriodoAlumnos = new ArrayList<DetallePeriodoAlumno>();

        try {

            connection = DataBaseConexion.getConexion();
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("select * from detalleperiodoalumno");
            while (rs.next()) {
                DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();
                detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));


                detallePeriodoAlumnos.add(detallePeriodoAlumno);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return detallePeriodoAlumnos;
    }

    public List<DetallePeriodoAlumno> findByIdPeriodoIdSede(String periodo, String sede) {
        List<DetallePeriodoAlumno> detallePeriodoAlumnos = new ArrayList<DetallePeriodoAlumno>();
        AlumnoManager alumManag = new AlumnoManager();
        CarreraManager carrManag = new CarreraManager();
        SedeManager sedeManag = new SedeManager();
        DetallePeriodoSedeManager detPerSedMang = new DetallePeriodoSedeManager();

        try {
            connection = DataBaseConexion.getConexion();
            Statement statement = connection.createStatement();
            PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idPeriodo=? AND idDellatePeriodoSede=?");
            prepareestatemente.setString(1, periodo);
            prepareestatemente.setString(2, sede);
            ResultSet rs = prepareestatemente.executeQuery();
            while (rs.next()) {
                DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();

                detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                detallePeriodoAlumno.setIdCarrera(carrManag.finById(rs.getString("idCarrera")).getNombre());
                detallePeriodoAlumno.setIdDetallePeriodoSede(sedeManag.finById(detPerSedMang.finById(rs.getString("idDellatePeriodoSede")).getIdSede()).getNombre());

                detallePeriodoAlumnos.add(detallePeriodoAlumno);

            }

            connection.close();
            statement.close();
            prepareestatemente.close();
            rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return detallePeriodoAlumnos;
    }

    public String ObtenerId() {

        java.util.Date ahora = new java.util.Date();
        SimpleDateFormat formateador = new SimpleDateFormat("ddMMyyyy");
        DetallePeriodoAlumnoManager trabManager = new DetallePeriodoAlumnoManager();
        int a = trabManager.Report().size();
        return formateador.format(ahora) + "PeriodoAlumno" + (a + 1);

    }

    public DetallePeriodoAlumno finById(String idDetallePeriodoAlumno) {
        DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();


        try {
            connection = DataBaseConexion.getConexion();
            PreparedStatement preparedStatement = connection.prepareStatement("select * from detalleperiodoalumno where idDetallePeriodoAlumno=?");
            preparedStatement.setString(1, idDetallePeriodoAlumno);
            ResultSet rs = preparedStatement.executeQuery();

            if (rs.next()) {

                detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));
                detallePeriodoAlumno.setCampus(rs.getString("campus"));
            }
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return detallePeriodoAlumno;
    }

    public void Update(DetallePeriodoAlumno detallePeriodoAlumno) {
        try {
            connection = DataBaseConexion.getConexion();
            PreparedStatement preparedStatement = connection.prepareStatement(
                    " UPDATE  detalleperiodoalumno SET idDetallePeriodoAlumno = ?, idPeriodo = ?, idAlumno = ?"
                    + " , notaCursosFinal =? , notaExamenSemanalFinal = ? , notaExamenFinal = ? , pagoMatricula = ?"
                    + " , pagoEducacion = ? , pagoIngreso = ?, numCuotas = ?, idCarrera = ?, idDellatePeriodoSede = ?,  "
                    + "campus = ? WHERE idDetallePeriodoAlumno = ? ");


            preparedStatement.setString(1, detallePeriodoAlumno.getIdDetallePeriodoAlumno());
            preparedStatement.setString(2, detallePeriodoAlumno.getIdPeriodo());
            preparedStatement.setString(3, detallePeriodoAlumno.getIdAlumno());
            preparedStatement.setString(4, detallePeriodoAlumno.getNotaCursosFinal());
            preparedStatement.setString(5, detallePeriodoAlumno.getNotaExamenSemanalFinal());
            preparedStatement.setString(6, detallePeriodoAlumno.getNotaExamenFinal());
            preparedStatement.setString(7, detallePeriodoAlumno.getPagoMatricula());
            preparedStatement.setString(8, detallePeriodoAlumno.getPagoEducacion());
            preparedStatement.setString(9, detallePeriodoAlumno.getPagoIngreso());
            preparedStatement.setString(10, detallePeriodoAlumno.getNumCuotas());
            preparedStatement.setString(11, detallePeriodoAlumno.getIdCarrera());
            preparedStatement.setString(12, detallePeriodoAlumno.getIdDetallePeriodoSede());
            preparedStatement.setString(13, detallePeriodoAlumno.getCampus());
            preparedStatement.setString(14, detallePeriodoAlumno.getIdDetallePeriodoAlumno());

            preparedStatement.executeUpdate();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void UpdateNotaExamenFinal(String idDetallePeriodoAlumno, String nota) {
        try {
            connection = DataBaseConexion.getConexion();
            PreparedStatement preparedStatement = connection.prepareStatement(
                    " UPDATE  detalleperiodoalumno SET notaExamenSemanalFinal = ? WHERE idDetallePeriodoAlumno = ? ");
            preparedStatement.setString(1, nota);
            preparedStatement.setString(2, idDetallePeriodoAlumno);

            preparedStatement.executeUpdate();
            connection.close();
            preparedStatement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void UpdateNotaCursoFinal(String idDetallePeriodoAlumno, String nota) {
        try {
            connection = DataBaseConexion.getConexion();
            PreparedStatement preparedStatement = connection.prepareStatement(
                    " UPDATE  detalleperiodoalumno SET notaCursosFinal = ? WHERE idDetallePeriodoAlumno = ? ");
            preparedStatement.setString(1, nota);
            preparedStatement.setString(2, idDetallePeriodoAlumno);

            preparedStatement.executeUpdate();
            connection.close();
            preparedStatement.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public List<DetallePeriodoAlumno> Search(String sedeo, String carrerao, String Periodoo) {

        System.out.println(sedeo + "  00  " + carrerao);


        List<DetallePeriodoAlumno> detallePeriodoAlumnos = new ArrayList<DetallePeriodoAlumno>();

        if ((sedeo.equals("Todo") == true) && (carrerao.equals("Todo") == true)) {
            System.out.println("1.- " + sedeo + " - " + carrerao + " - " + Periodoo);
            try {
                connection = DataBaseConexion.getConexion();
                Statement statement = connection.createStatement();
                PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idPeriodo=?");
                prepareestatemente.setString(1, Periodoo);


                ResultSet rs = prepareestatemente.executeQuery();
                while (rs.next()) {
                    DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();
                    detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                    detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                    detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                    detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                    detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                    detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                    detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                    detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                    detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                    detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                    detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                    detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));
                    detallePeriodoAlumnos.add(detallePeriodoAlumno);

                }

                connection.close();
                statement.close();
                prepareestatemente.close();
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }



        }

        if ((sedeo.equals("Todo") == true) && (carrerao.equals("Todo") == false)) {
            System.out.println("todos" + " no Todos");
            System.out.println((sedeo.equals("Todo")));
            System.out.println((carrerao == "Todo"));
            System.out.println("-----------------------------------------------");
            System.out.println("2.- " + sedeo + " - " + carrerao + " - " + Periodoo);
            try {
                connection = DataBaseConexion.getConexion();
                Statement statement = connection.createStatement();
                PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idCarrera=? AND idPeriodo=?");
                prepareestatemente.setString(1, carrerao);
                prepareestatemente.setString(2, Periodoo);
               

                ResultSet rs = prepareestatemente.executeQuery();
                while (rs.next()) {
                    DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();
                    detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                    detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                    detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                    detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                    detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                    detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                    detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                    detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                    detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                    detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                    detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                    detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));
                    detallePeriodoAlumnos.add(detallePeriodoAlumno);

                }

                connection.close();
                statement.close();
                prepareestatemente.close();
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }


        if ((sedeo.equals("Todo") == false) && (carrerao.equals("Todo") == true)) {
            System.out.println(" ---todos" + "Todos");
            System.out.println((carrerao.equals("Todo")));
            System.out.println((sedeo == "Todo"));
            System.out.println("3.- " + sedeo + " - " + carrerao + " - " + Periodoo);
            try {
                System.out.println("-----------------------------------------------");
                connection = DataBaseConexion.getConexion();
                Statement statement = connection.createStatement();
                PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idDellatePeriodoSede=? AND idPeriodo=?");
                prepareestatemente.setString(1, sedeo);
                prepareestatemente.setString(2, Periodoo);

                ResultSet rs = prepareestatemente.executeQuery();
                while (rs.next()) {
                    DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();
                    detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                    detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                    detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                    detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                    detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                    detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                    detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                    detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                    detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                    detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                    detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                    detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));
                    detallePeriodoAlumnos.add(detallePeriodoAlumno);

                }

                connection.close();
                statement.close();
                prepareestatemente.close();
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }

        if ((sedeo.equals("Todo") == false) && (carrerao.equals("Todo") == false)) {
            System.out.println(" ---todos" + "  ---Todos");
            System.out.println("4.- " + sedeo + " - " + carrerao + " - " + Periodoo);
            try {
                System.out.println((sedeo != "Todo"));
                System.out.println((carrerao != "Todo"));
                System.out.println("-----------------------------------------------");
                connection = DataBaseConexion.getConexion();
                Statement statement = connection.createStatement();
                PreparedStatement prepareestatemente = connection.prepareStatement("SELECT * FROM  detalleperiodoalumno WHERE idDellatePeriodoSede=? AND idCarrera=? AND idPeriodo=?");
                prepareestatemente.setString(1, sedeo);
                prepareestatemente.setString(2, carrerao);
                prepareestatemente.setString(3, Periodoo);
                ResultSet rs = prepareestatemente.executeQuery();
                while (rs.next()) {
                    DetallePeriodoAlumno detallePeriodoAlumno = new DetallePeriodoAlumno();
                    detallePeriodoAlumno.setIdDetallePeriodoAlumno(rs.getString("idDetallePeriodoAlumno"));
                    detallePeriodoAlumno.setIdPeriodo(rs.getString("idPeriodo"));
                    detallePeriodoAlumno.setIdAlumno(rs.getString("idAlumno"));
                    detallePeriodoAlumno.setNotaCursosFinal(rs.getString("notaCursosFinal"));
                    detallePeriodoAlumno.setNotaExamenSemanalFinal(rs.getString("notaExamenSemanalFinal"));
                    detallePeriodoAlumno.setNotaExamenFinal(rs.getString("notaExamenFinal"));
                    detallePeriodoAlumno.setPagoMatricula(rs.getString("pagoMatricula"));
                    detallePeriodoAlumno.setPagoEducacion(rs.getString("pagoEducacion"));
                    detallePeriodoAlumno.setPagoIngreso(rs.getString("pagoIngreso"));
                    detallePeriodoAlumno.setNumCuotas(rs.getString("numCuotas"));
                    detallePeriodoAlumno.setIdCarrera(rs.getString("idCarrera"));
                    detallePeriodoAlumno.setIdDetallePeriodoSede(rs.getString("idDellatePeriodoSede"));
                    detallePeriodoAlumnos.add(detallePeriodoAlumno);

                }

                connection.close();
                statement.close();
                prepareestatemente.close();
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }

        System.out.println(detallePeriodoAlumnos.size());

        return detallePeriodoAlumnos;


    }
}
